package regraDeNegocio;

/**
 * Mensageiro
 *
 * @author Alex Malmann Becker
 * @since 08/01/2013
 * @version 1.0
 *
 * Classe do Mensageiro do jogo.
 */
public class Mensageiro extends Personagem {

    private String mensagem;
    private String[] tempo = {"tpSol", "tpChuva"};
    private double posicaoAtual;
    private int pontosDeVida;
    private Pessoal[] itens;

    /**
     * Método construtor da classe
     *
     */
    public Mensageiro() {
        this.pontosDeVida = 100;
    }

    /**
     * Método que retorna pontos de vida
     *
     * @return pontosDeVida
     */
    public int getPontosDeVida() {
        return this.pontosDeVida;
    }

    /**
     * Método para ganhar pontos de vida
     *
     * @param pontosDeVida passa como parâmetro os pontos de vida ganhos
     */
    public void ganharPontosDeVida(int pontosDeVida) {
        if (this.pontosDeVida + pontosDeVida > 100) {
            this.pontosDeVida = 100;
        } else {
            this.pontosDeVida = this.pontosDeVida + pontosDeVida;
        }
    }

    /**
     * Método para perder pontos de vida
     *
     * @param pontosDeVida passa como parâmetro os pontos de vida perdidos
     * @return boolean Retorna se mensageiro morreu ou não
     */
    public boolean perderPontosDeVida(int pontosDeVida) {
        this.pontosDeVida = this.pontosDeVida - pontosDeVida;
        if (this.pontosDeVida < 0) {
            return true; // morreu
        } else {
            return false; // continua vivo
        }
    }

    /**
     * Método para dormir
     *
     */
    public void dormir() {
        ganharPontosDeVida(20);
    }

    /**
     * Método para beber
     *
     */
    public void beber() {
        ganharPontosDeVida(15);
    }

    /**
     * Método para comer
     *
     * @param comidaLeve passa como parametro se é comida leve ou não
     */
    public void comer(boolean comidaLeve) {
        if (comidaLeve) {
            ganharPontosDeVida(15);
        } else {
            ganharPontosDeVida(30);
        }
    }

    /**
     * Método que retornará A Mensagem.
     *
     * @return mensagem
     */
    public String getMensagem() {
        return mensagem;
    }

    /**
     * Método que setará a Mensagem.
     *
     * @param mensagem passa como parâmetro a Mensagem
     */
    public void setMensagem(String mensagem) {
        this.mensagem = mensagem;
    }

    /**
     * Método que retornará a Posição Atual.
     *
     * @return posicaoAtual
     */
    public double getPosicaoAtual() {
        return posicaoAtual;
    }

    /**
     * Método que setará a Posição Atual.
     *
     * @param posicaoAtual passa como parâmetro a posição Atual
     */
    public void setPosicaoAtual(double posicaoAtual) {
        this.posicaoAtual = posicaoAtual;
    }

    /**
     * Método que retornará a previsão do tempo.
     *
     * @return tempo {"tpSol", "tpChuva"}
     */
    public String preverTempo() {
        return this.tempo[(int) ((this.tempo.length) * Math.random())];
    }

    /**
     * Método que retorna os itens
     *
     * @return
     */
    public Pessoal[] getItens() {
        return itens;
    }

    /**
     * Método que seta os itens
     *
     * @param itens passa o itens como parametro
     */
    public void setItens(Pessoal[] itens) {
        this.itens = itens;
    }
}